{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n",
      "\r",
      " [   0 / 500 ]   0% - ? it/s\r",
      " [   0 / 500 ]   0% - ? it/s\r",
      " [   1 / 500 ]   0% - 0:00:00 left \r",
      " [   2 / 500 ]   0% - 0:00:00 left \r",
      " [   3 / 500 ]   1% - 0:00:00 left \r",
      " [   4 / 500 ]   1% - 0:00:00 left \r",
      " [   5 / 500 ]   1% - 0:00:00 left \r",
      " [   6 / 500 ]   1% - 0:00:00 left \r",
      " [   7 / 500 ]   1% - 0:00:00 left \r",
      " [   8 / 500 ]   2% - 0:00:00 left \r",
      " [   9 / 500 ]   2% - 0:00:00 left \r",
      " [  10 / 500 ]   2% - 0:00:00 left \r",
      " [  11 / 500 ]   2% - 0:00:00 left \r",
      " [  12 / 500 ]   2% - 0:00:00 left \r",
      " [  13 / 500 ]   3% - 0:00:00 left \r",
      " [  14 / 500 ]   3% - 0:00:00 left \r",
      " [  15 / 500 ]   3% - 0:00:00 left \r",
      " [  16 / 500 ]   3% - 0:00:00 left \r",
      " [  17 / 500 ]   3% - 0:00:00 left \r",
      " [  18 / 500 ]   4% - 0:00:00 left \r",
      " [  19 / 500 ]   4% - 0:00:00 left \r",
      " [  20 / 500 ]   4% - 0:00:00 left \r",
      " [  21 / 500 ]   4% - 0:00:00 left \r",
      " [  22 / 500 ]   4% - 0:00:00 left \r",
      " [  23 / 500 ]   5% - 0:00:00 left \r",
      " [  24 / 500 ]   5% - 0:00:00 left \r",
      " [  25 / 500 ]   5% - 0:00:00 left \r",
      " [  26 / 500 ]   5% - 0:00:00 left \r",
      " [  27 / 500 ]   5% - 0:00:00 left \r",
      " [  28 / 500 ]   6% - 0:00:00 left \r",
      " [  29 / 500 ]   6% - 0:00:00 left \r",
      " [  30 / 500 ]   6% - 0:00:00 left \r",
      " [  31 / 500 ]   6% - 0:00:00 left \r",
      " [  32 / 500 ]   6% - 0:00:00 left \r",
      " [  33 / 500 ]   7% - 0:00:00 left \r",
      " [  34 / 500 ]   7% - 0:00:00 left \r",
      " [  35 / 500 ]   7% - 0:00:00 left \r",
      " [  36 / 500 ]   7% - 0:00:00 left \r",
      " [  37 / 500 ]   7% - 0:00:00 left \r",
      " [  38 / 500 ]   8% - 0:00:00 left \r",
      " [  39 / 500 ]   8% - 0:00:00 left \r",
      " [  40 / 500 ]   8% - 0:00:00 left \r",
      " [  41 / 500 ]   8% - 0:00:00 left \r",
      " [  42 / 500 ]   8% - 0:00:00 left \r",
      " [  43 / 500 ]   9% - 0:00:00 left \r",
      " [  44 / 500 ]   9% - 0:00:00 left \r",
      " [  45 / 500 ]   9% - 0:00:00 left \r",
      " [  46 / 500 ]   9% - 0:00:00 left \r",
      " [  47 / 500 ]   9% - 0:00:00 left \r",
      " [  48 / 500 ]  10% - 0:00:00 left \r",
      " [  49 / 500 ]  10% - 0:00:00 left \r",
      " [  50 / 500 ]  10% - 0:00:00 left \r",
      " [  51 / 500 ]  10% - 0:00:00 left \r",
      " [  52 / 500 ]  10% - 0:00:00 left \r",
      " [  53 / 500 ]  11% - 0:00:00 left \r",
      " [  54 / 500 ]  11% - 0:00:00 left \r",
      " [  55 / 500 ]  11% - 0:00:00 left \r",
      " [  56 / 500 ]  11% - 0:00:00 left \r",
      " [  57 / 500 ]  11% - 0:00:00 left \r",
      " [  58 / 500 ]  12% - 0:00:00 left \r",
      " [  59 / 500 ]  12% - 0:00:00 left \r",
      " [  60 / 500 ]  12% - 0:00:00 left \r",
      " [  61 / 500 ]  12% - 0:00:00 left \r",
      " [  62 / 500 ]  12% - 0:00:00 left \r",
      " [  63 / 500 ]  13% - 0:00:00 left \r",
      " [  64 / 500 ]  13% - 0:00:00 left \r",
      " [  65 / 500 ]  13% - 0:00:00 left \r",
      " [  66 / 500 ]  13% - 0:00:00 left \r",
      " [  67 / 500 ]  13% - 0:00:00 left \r",
      " [  68 / 500 ]  14% - 0:00:00 left \r",
      " [  69 / 500 ]  14% - 0:00:00 left \r",
      " [  70 / 500 ]  14% - 0:00:00 left \r",
      " [  71 / 500 ]  14% - 0:00:00 left \r",
      " [  72 / 500 ]  14% - 0:00:00 left \r",
      " [  73 / 500 ]  15% - 0:00:00 left \r",
      " [  74 / 500 ]  15% - 0:00:00 left \r",
      " [  75 / 500 ]  15% - 0:00:00 left \r",
      " [  76 / 500 ]  15% - 0:00:00 left \r",
      " [  77 / 500 ]  15% - 0:00:00 left \r",
      " [  78 / 500 ]  16% - 0:00:00 left \r",
      " [  79 / 500 ]  16% - 0:00:00 left \r",
      " [  80 / 500 ]  16% - 0:00:00 left \r",
      " [  81 / 500 ]  16% - 0:00:00 left \r",
      " [  82 / 500 ]  16% - 0:00:00 left \r",
      " [  83 / 500 ]  17% - 0:00:00 left \r",
      " [  84 / 500 ]  17% - 0:00:00 left \r",
      " [  85 / 500 ]  17% - 0:00:00 left \r",
      " [  86 / 500 ]  17% - 0:00:00 left \r",
      " [  87 / 500 ]  17% - 0:00:00 left \r",
      " [  88 / 500 ]  18% - 0:00:00 left \r",
      " [  89 / 500 ]  18% - 0:00:00 left \r",
      " [  90 / 500 ]  18% - 0:00:00 left \r",
      " [  91 / 500 ]  18% - 0:00:00 left \r",
      " [  92 / 500 ]  18% - 0:00:00 left \r",
      " [  93 / 500 ]  19% - 0:00:00 left \r",
      " [  94 / 500 ]  19% - 0:00:00 left \r",
      " [  95 / 500 ]  19% - 0:00:00 left \r",
      " [  96 / 500 ]  19% - 0:00:00 left \r",
      " [  97 / 500 ]  19% - 0:00:00 left \r",
      " [  98 / 500 ]  20% - 0:00:00 left \r",
      " [  99 / 500 ]  20% - 0:00:00 left \r",
      " [ 100 / 500 ]  20% - 0:00:00 left \r",
      " [ 101 / 500 ]  20% - 0:00:00 left \r",
      " [ 102 / 500 ]  20% - 0:00:00 left \r",
      " [ 103 / 500 ]  21% - 0:00:00 left \r",
      " [ 104 / 500 ]  21% - 0:00:00 left \r",
      " [ 105 / 500 ]  21% - 0:00:00 left \r",
      " [ 106 / 500 ]  21% - 0:00:00 left \r",
      " [ 107 / 500 ]  21% - 0:00:00 left \r",
      " [ 108 / 500 ]  22% - 0:00:00 left \r",
      " [ 109 / 500 ]  22% - 0:00:00 left \r",
      " [ 110 / 500 ]  22% - 0:00:00 left \r",
      " [ 111 / 500 ]  22% - 0:00:00 left \r",
      " [ 112 / 500 ]  22% - 0:00:00 left \r",
      " [ 113 / 500 ]  23% - 0:00:00 left \r",
      " [ 114 / 500 ]  23% - 0:00:00 left \r",
      " [ 115 / 500 ]  23% - 0:00:00 left \r",
      " [ 116 / 500 ]  23% - 0:00:00 left \r",
      " [ 117 / 500 ]  23% - 0:00:00 left \r",
      " [ 118 / 500 ]  24% - 0:00:00 left \r",
      " [ 119 / 500 ]  24% - 0:00:00 left \r",
      " [ 120 / 500 ]  24% - 0:00:00 left \r",
      " [ 121 / 500 ]  24% - 0:00:00 left \r",
      " [ 122 / 500 ]  24% - 0:00:00 left \r",
      " [ 123 / 500 ]  25% - 0:00:00 left \r",
      " [ 124 / 500 ]  25% - 0:00:00 left \r",
      " [ 125 / 500 ]  25% - 0:00:00 left \r",
      " [ 126 / 500 ]  25% - 0:00:00 left \r",
      " [ 127 / 500 ]  25% - 0:00:00 left \r",
      " [ 128 / 500 ]  26% - 0:00:00 left \r",
      " [ 129 / 500 ]  26% - 0:00:00 left \r",
      " [ 130 / 500 ]  26% - 0:00:00 left \r",
      " [ 131 / 500 ]  26% - 0:00:00 left \r",
      " [ 132 / 500 ]  26% - 0:00:00 left \r",
      " [ 133 / 500 ]  27% - 0:00:00 left \r",
      " [ 134 / 500 ]  27% - 0:00:00 left \r",
      " [ 135 / 500 ]  27% - 0:00:00 left \r",
      " [ 136 / 500 ]  27% - 0:00:00 left \r",
      " [ 137 / 500 ]  27% - 0:00:00 left \r",
      " [ 138 / 500 ]  28% - 0:00:00 left \r",
      " [ 139 / 500 ]  28% - 0:00:00 left \r",
      " [ 140 / 500 ]  28% - 0:00:00 left \r",
      " [ 141 / 500 ]  28% - 0:00:00 left \r",
      " [ 142 / 500 ]  28% - 0:00:00 left \r",
      " [ 143 / 500 ]  29% - 0:00:00 left \r",
      " [ 144 / 500 ]  29% - 0:00:00 left \r",
      " [ 145 / 500 ]  29% - 0:00:00 left \r",
      " [ 146 / 500 ]  29% - 0:00:00 left \r",
      " [ 147 / 500 ]  29% - 0:00:00 left \r",
      " [ 148 / 500 ]  30% - 0:00:00 left \r",
      " [ 149 / 500 ]  30% - 0:00:00 left \r",
      " [ 150 / 500 ]  30% - 0:00:00 left \r",
      " [ 151 / 500 ]  30% - 0:00:00 left \r",
      " [ 152 / 500 ]  30% - 0:00:00 left \r",
      " [ 153 / 500 ]  31% - 0:00:00 left \r",
      " [ 154 / 500 ]  31% - 0:00:00 left \r",
      " [ 155 / 500 ]  31% - 0:00:00 left \r",
      " [ 156 / 500 ]  31% - 0:00:00 left \r",
      " [ 157 / 500 ]  31% - 0:00:00 left \r",
      " [ 158 / 500 ]  32% - 0:00:00 left \r",
      " [ 159 / 500 ]  32% - 0:00:00 left \r",
      " [ 160 / 500 ]  32% - 0:00:00 left \r",
      " [ 161 / 500 ]  32% - 0:00:00 left \r",
      " [ 162 / 500 ]  32% - 0:00:00 left \r",
      " [ 163 / 500 ]  33% - 0:00:00 left \r",
      " [ 164 / 500 ]  33% - 0:00:00 left \r",
      " [ 165 / 500 ]  33% - 0:00:00 left \r",
      " [ 166 / 500 ]  33% - 0:00:00 left \r",
      " [ 167 / 500 ]  33% - 0:00:00 left \r",
      " [ 168 / 500 ]  34% - 0:00:00 left \r",
      " [ 169 / 500 ]  34% - 0:00:00 left \r",
      " [ 170 / 500 ]  34% - 0:00:00 left \r",
      " [ 171 / 500 ]  34% - 0:00:00 left \r",
      " [ 172 / 500 ]  34% - 0:00:00 left \r",
      " [ 173 / 500 ]  35% - 0:00:00 left \r",
      " [ 174 / 500 ]  35% - 0:00:00 left \r",
      " [ 175 / 500 ]  35% - 0:00:00 left \r",
      " [ 176 / 500 ]  35% - 0:00:00 left \r",
      " [ 177 / 500 ]  35% - 0:00:00 left \r",
      " [ 178 / 500 ]  36% - 0:00:00 left \r",
      " [ 179 / 500 ]  36% - 0:00:00 left \r",
      " [ 180 / 500 ]  36% - 0:00:00 left \r",
      " [ 181 / 500 ]  36% - 0:00:00 left \r",
      " [ 182 / 500 ]  36% - 0:00:00 left \r",
      " [ 183 / 500 ]  37% - 0:00:00 left \r",
      " [ 184 / 500 ]  37% - 0:00:00 left \r",
      " [ 185 / 500 ]  37% - 0:00:00 left \r",
      " [ 186 / 500 ]  37% - 0:00:00 left \r",
      " [ 187 / 500 ]  37% - 0:00:00 left \r",
      " [ 188 / 500 ]  38% - 0:00:00 left \r",
      " [ 189 / 500 ]  38% - 0:00:00 left \r",
      " [ 190 / 500 ]  38% - 0:00:00 left \r",
      " [ 191 / 500 ]  38% - 0:00:00 left \r",
      " [ 192 / 500 ]  38% - 0:00:00 left \r",
      " [ 193 / 500 ]  39% - 0:00:00 left \r",
      " [ 194 / 500 ]  39% - 0:00:00 left \r",
      " [ 195 / 500 ]  39% - 0:00:00 left \r",
      " [ 196 / 500 ]  39% - 0:00:00 left \r",
      " [ 197 / 500 ]  39% - 0:00:00 left \r",
      " [ 198 / 500 ]  40% - 0:00:00 left \r",
      " [ 199 / 500 ]  40% - 0:00:00 left \r",
      " [ 200 / 500 ]  40% - 0:00:00 left \r",
      " [ 201 / 500 ]  40% - 0:00:00 left \r",
      " [ 202 / 500 ]  40% - 0:00:00 left \r",
      " [ 203 / 500 ]  41% - 0:00:00 left \r",
      " [ 204 / 500 ]  41% - 0:00:00 left \r",
      " [ 205 / 500 ]  41% - 0:00:00 left \r",
      " [ 206 / 500 ]  41% - 0:00:00 left \r",
      " [ 207 / 500 ]  41% - 0:00:00 left \r",
      " [ 208 / 500 ]  42% - 0:00:00 left \r",
      " [ 209 / 500 ]  42% - 0:00:00 left \r",
      " [ 210 / 500 ]  42% - 0:00:00 left \r",
      " [ 211 / 500 ]  42% - 0:00:00 left \r",
      " [ 212 / 500 ]  42% - 0:00:00 left \r",
      " [ 213 / 500 ]  43% - 0:00:00 left \r",
      " [ 214 / 500 ]  43% - 0:00:00 left \r",
      " [ 215 / 500 ]  43% - 0:00:00 left \r",
      " [ 216 / 500 ]  43% - 0:00:00 left \r",
      " [ 217 / 500 ]  43% - 0:00:00 left \r",
      " [ 218 / 500 ]  44% - 0:00:00 left \r",
      " [ 219 / 500 ]  44% - 0:00:00 left \r",
      " [ 220 / 500 ]  44% - 0:00:00 left \r",
      " [ 221 / 500 ]  44% - 0:00:00 left \r",
      " [ 222 / 500 ]  44% - 0:00:00 left \r",
      " [ 223 / 500 ]  45% - 0:00:00 left \r",
      " [ 224 / 500 ]  45% - 0:00:00 left \r",
      " [ 225 / 500 ]  45% - 0:00:00 left \r",
      " [ 226 / 500 ]  45% - 0:00:00 left \r",
      " [ 227 / 500 ]  45% - 0:00:00 left \r",
      " [ 228 / 500 ]  46% - 0:00:00 left \r",
      " [ 229 / 500 ]  46% - 0:00:00 left \r",
      " [ 230 / 500 ]  46% - 0:00:00 left \r",
      " [ 231 / 500 ]  46% - 0:00:00 left \r",
      " [ 232 / 500 ]  46% - 0:00:00 left \r",
      " [ 233 / 500 ]  47% - 0:00:00 left \r",
      " [ 234 / 500 ]  47% - 0:00:00 left \r",
      " [ 235 / 500 ]  47% - 0:00:00 left \r",
      " [ 236 / 500 ]  47% - 0:00:00 left \r",
      " [ 237 / 500 ]  47% - 0:00:00 left \r",
      " [ 238 / 500 ]  48% - 0:00:00 left \r",
      " [ 239 / 500 ]  48% - 0:00:00 left \r",
      " [ 240 / 500 ]  48% - 0:00:00 left \r",
      " [ 241 / 500 ]  48% - 0:00:00 left \r",
      " [ 242 / 500 ]  48% - 0:00:00 left \r",
      " [ 243 / 500 ]  49% - 0:00:00 left \r",
      " [ 244 / 500 ]  49% - 0:00:00 left \r",
      " [ 245 / 500 ]  49% - 0:00:00 left \r",
      " [ 246 / 500 ]  49% - 0:00:00 left \r",
      " [ 247 / 500 ]  49% - 0:00:00 left \r",
      " [ 248 / 500 ]  50% - 0:00:00 left \r",
      " [ 249 / 500 ]  50% - 0:00:00 left \r",
      " [ 250 / 500 ]  50% - 0:00:00 left \r",
      " [ 251 / 500 ]  50% - 0:00:00 left \r",
      " [ 252 / 500 ]  50% - 0:00:00 left \r",
      " [ 253 / 500 ]  51% - 0:00:00 left \r",
      " [ 254 / 500 ]  51% - 0:00:00 left \r",
      " [ 255 / 500 ]  51% - 0:00:00 left \r",
      " [ 256 / 500 ]  51% - 0:00:00 left \r",
      " [ 257 / 500 ]  51% - 0:00:00 left \r",
      " [ 258 / 500 ]  52% - 0:00:00 left \r",
      " [ 259 / 500 ]  52% - 0:00:00 left \r",
      " [ 260 / 500 ]  52% - 0:00:00 left \r",
      " [ 261 / 500 ]  52% - 0:00:00 left \r",
      " [ 262 / 500 ]  52% - 0:00:00 left \r",
      " [ 263 / 500 ]  53% - 0:00:00 left \r",
      " [ 264 / 500 ]  53% - 0:00:00 left \r",
      " [ 265 / 500 ]  53% - 0:00:00 left \r",
      " [ 266 / 500 ]  53% - 0:00:00 left \r",
      " [ 267 / 500 ]  53% - 0:00:00 left \r",
      " [ 268 / 500 ]  54% - 0:00:00 left \r",
      " [ 269 / 500 ]  54% - 0:00:00 left \r",
      " [ 270 / 500 ]  54% - 0:00:00 left \r",
      " [ 271 / 500 ]  54% - 0:00:00 left \r",
      " [ 272 / 500 ]  54% - 0:00:00 left \r",
      " [ 273 / 500 ]  55% - 0:00:00 left \r",
      " [ 274 / 500 ]  55% - 0:00:00 left \r",
      " [ 275 / 500 ]  55% - 0:00:00 left \r",
      " [ 276 / 500 ]  55% - 0:00:00 left \r",
      " [ 277 / 500 ]  55% - 0:00:00 left \r",
      " [ 278 / 500 ]  56% - 0:00:00 left \r",
      " [ 279 / 500 ]  56% - 0:00:00 left \r",
      " [ 280 / 500 ]  56% - 0:00:00 left \r",
      " [ 281 / 500 ]  56% - 0:00:00 left \r",
      " [ 282 / 500 ]  56% - 0:00:00 left \r",
      " [ 283 / 500 ]  57% - 0:00:00 left \r",
      " [ 284 / 500 ]  57% - 0:00:00 left \r",
      " [ 285 / 500 ]  57% - 0:00:00 left \r",
      " [ 286 / 500 ]  57% - 0:00:00 left \r",
      " [ 287 / 500 ]  57% - 0:00:00 left \r",
      " [ 288 / 500 ]  58% - 0:00:00 left \r",
      " [ 289 / 500 ]  58% - 0:00:00 left \r",
      " [ 290 / 500 ]  58% - 0:00:00 left \r",
      " [ 291 / 500 ]  58% - 0:00:00 left \r",
      " [ 292 / 500 ]  58% - 0:00:00 left \r",
      " [ 293 / 500 ]  59% - 0:00:00 left \r",
      " [ 294 / 500 ]  59% - 0:00:00 left \r",
      " [ 295 / 500 ]  59% - 0:00:00 left \r",
      " [ 296 / 500 ]  59% - 0:00:00 left \r",
      " [ 297 / 500 ]  59% - 0:00:00 left \r",
      " [ 298 / 500 ]  60% - 0:00:00 left \r",
      " [ 299 / 500 ]  60% - 0:00:00 left \r",
      " [ 300 / 500 ]  60% - 0:00:00 left \r",
      " [ 301 / 500 ]  60% - 0:00:00 left \r",
      " [ 302 / 500 ]  60% - 0:00:00 left \r",
      " [ 303 / 500 ]  61% - 0:00:00 left \r",
      " [ 304 / 500 ]  61% - 0:00:00 left \r",
      " [ 305 / 500 ]  61% - 0:00:00 left \r",
      " [ 306 / 500 ]  61% - 0:00:00 left \r",
      " [ 307 / 500 ]  61% - 0:00:00 left \r",
      " [ 308 / 500 ]  62% - 0:00:00 left \r",
      " [ 309 / 500 ]  62% - 0:00:00 left \r",
      " [ 310 / 500 ]  62% - 0:00:00 left \r",
      " [ 311 / 500 ]  62% - 0:00:00 left \r",
      " [ 312 / 500 ]  62% - 0:00:00 left \r",
      " [ 313 / 500 ]  63% - 0:00:00 left \r",
      " [ 314 / 500 ]  63% - 0:00:00 left \r",
      " [ 315 / 500 ]  63% - 0:00:00 left \r",
      " [ 316 / 500 ]  63% - 0:00:00 left \r",
      " [ 317 / 500 ]  63% - 0:00:00 left \r",
      " [ 318 / 500 ]  64% - 0:00:00 left \r",
      " [ 319 / 500 ]  64% - 0:00:00 left \r",
      " [ 320 / 500 ]  64% - 0:00:00 left \r",
      " [ 321 / 500 ]  64% - 0:00:00 left \r",
      " [ 322 / 500 ]  64% - 0:00:00 left \r",
      " [ 323 / 500 ]  65% - 0:00:00 left \r",
      " [ 324 / 500 ]  65% - 0:00:00 left \r",
      " [ 325 / 500 ]  65% - 0:00:00 left \r",
      " [ 326 / 500 ]  65% - 0:00:00 left \r",
      " [ 327 / 500 ]  65% - 0:00:00 left \r",
      " [ 328 / 500 ]  66% - 0:00:00 left \r",
      " [ 329 / 500 ]  66% - 0:00:00 left \r",
      " [ 330 / 500 ]  66% - 0:00:00 left \r",
      " [ 331 / 500 ]  66% - 0:00:00 left \r",
      " [ 332 / 500 ]  66% - 0:00:00 left \r",
      " [ 333 / 500 ]  67% - 0:00:00 left \r",
      " [ 334 / 500 ]  67% - 0:00:00 left \r",
      " [ 335 / 500 ]  67% - 0:00:00 left \r",
      " [ 336 / 500 ]  67% - 0:00:00 left \r",
      " [ 337 / 500 ]  67% - 0:00:00 left \r",
      " [ 338 / 500 ]  68% - 0:00:00 left \r",
      " [ 339 / 500 ]  68% - 0:00:00 left \r",
      " [ 340 / 500 ]  68% - 0:00:00 left \r",
      " [ 341 / 500 ]  68% - 0:00:00 left \r",
      " [ 342 / 500 ]  68% - 0:00:00 left \r",
      " [ 343 / 500 ]  69% - 0:00:00 left \r",
      " [ 344 / 500 ]  69% - 0:00:00 left \r",
      " [ 345 / 500 ]  69% - 0:00:00 left \r",
      " [ 346 / 500 ]  69% - 0:00:00 left \r",
      " [ 347 / 500 ]  69% - 0:00:00 left \r",
      " [ 348 / 500 ]  70% - 0:00:00 left \r",
      " [ 349 / 500 ]  70% - 0:00:00 left \r",
      " [ 350 / 500 ]  70% - 0:00:00 left \r",
      " [ 351 / 500 ]  70% - 0:00:00 left \r",
      " [ 352 / 500 ]  70% - 0:00:00 left \r",
      " [ 353 / 500 ]  71% - 0:00:00 left \r",
      " [ 354 / 500 ]  71% - 0:00:00 left \r",
      " [ 355 / 500 ]  71% - 0:00:00 left \r",
      " [ 356 / 500 ]  71% - 0:00:00 left \r",
      " [ 357 / 500 ]  71% - 0:00:00 left \r",
      " [ 358 / 500 ]  72% - 0:00:00 left \r",
      " [ 359 / 500 ]  72% - 0:00:00 left \r",
      " [ 360 / 500 ]  72% - 0:00:00 left \r",
      " [ 361 / 500 ]  72% - 0:00:00 left \r",
      " [ 362 / 500 ]  72% - 0:00:00 left \r",
      " [ 363 / 500 ]  73% - 0:00:00 left \r",
      " [ 364 / 500 ]  73% - 0:00:00 left \r",
      " [ 365 / 500 ]  73% - 0:00:00 left \r",
      " [ 366 / 500 ]  73% - 0:00:00 left \r",
      " [ 367 / 500 ]  73% - 0:00:00 left \r",
      " [ 368 / 500 ]  74% - 0:00:00 left \r",
      " [ 369 / 500 ]  74% - 0:00:00 left \r",
      " [ 370 / 500 ]  74% - 0:00:00 left \r",
      " [ 371 / 500 ]  74% - 0:00:00 left \r",
      " [ 372 / 500 ]  74% - 0:00:00 left \r",
      " [ 373 / 500 ]  75% - 0:00:00 left \r",
      " [ 374 / 500 ]  75% - 0:00:00 left \r",
      " [ 375 / 500 ]  75% - 0:00:00 left \r",
      " [ 376 / 500 ]  75% - 0:00:00 left \r",
      " [ 377 / 500 ]  75% - 0:00:00 left \r",
      " [ 378 / 500 ]  76% - 0:00:00 left \r",
      " [ 379 / 500 ]  76% - 0:00:00 left \r",
      " [ 380 / 500 ]  76% - 0:00:00 left \r",
      " [ 381 / 500 ]  76% - 0:00:00 left \r",
      " [ 382 / 500 ]  76% - 0:00:00 left \r",
      " [ 383 / 500 ]  77% - 0:00:00 left \r",
      " [ 384 / 500 ]  77% - 0:00:00 left \r",
      " [ 385 / 500 ]  77% - 0:00:00 left \r",
      " [ 386 / 500 ]  77% - 0:00:00 left \r",
      " [ 387 / 500 ]  77% - 0:00:00 left \r",
      " [ 388 / 500 ]  78% - 0:00:00 left \r",
      " [ 389 / 500 ]  78% - 0:00:00 left \r",
      " [ 390 / 500 ]  78% - 0:00:00 left \r",
      " [ 391 / 500 ]  78% - 0:00:00 left \r",
      " [ 392 / 500 ]  78% - 0:00:00 left \r",
      " [ 393 / 500 ]  79% - 0:00:00 left \r",
      " [ 394 / 500 ]  79% - 0:00:00 left \r",
      " [ 395 / 500 ]  79% - 0:00:00 left \r",
      " [ 396 / 500 ]  79% - 0:00:00 left \r",
      " [ 397 / 500 ]  79% - 0:00:00 left \r",
      " [ 398 / 500 ]  80% - 0:00:00 left \r",
      " [ 399 / 500 ]  80% - 0:00:00 left \r",
      " [ 400 / 500 ]  80% - 0:00:00 left \r",
      " [ 401 / 500 ]  80% - 0:00:00 left \r",
      " [ 402 / 500 ]  80% - 0:00:00 left \r",
      " [ 403 / 500 ]  81% - 0:00:00 left \r",
      " [ 404 / 500 ]  81% - 0:00:00 left \r",
      " [ 405 / 500 ]  81% - 0:00:00 left \r",
      " [ 406 / 500 ]  81% - 0:00:00 left \r",
      " [ 407 / 500 ]  81% - 0:00:00 left \r",
      " [ 408 / 500 ]  82% - 0:00:00 left \r",
      " [ 409 / 500 ]  82% - 0:00:00 left \r",
      " [ 410 / 500 ]  82% - 0:00:00 left \r",
      " [ 411 / 500 ]  82% - 0:00:00 left \r",
      " [ 412 / 500 ]  82% - 0:00:00 left \r",
      " [ 413 / 500 ]  83% - 0:00:00 left \r",
      " [ 414 / 500 ]  83% - 0:00:00 left \r",
      " [ 415 / 500 ]  83% - 0:00:00 left \r",
      " [ 416 / 500 ]  83% - 0:00:00 left \r",
      " [ 417 / 500 ]  83% - 0:00:00 left \r",
      " [ 418 / 500 ]  84% - 0:00:00 left \r",
      " [ 419 / 500 ]  84% - 0:00:00 left \r",
      " [ 420 / 500 ]  84% - 0:00:00 left \r",
      " [ 421 / 500 ]  84% - 0:00:00 left \r",
      " [ 422 / 500 ]  84% - 0:00:00 left \r",
      " [ 423 / 500 ]  85% - 0:00:00 left \r",
      " [ 424 / 500 ]  85% - 0:00:00 left \r",
      " [ 425 / 500 ]  85% - 0:00:00 left \r",
      " [ 426 / 500 ]  85% - 0:00:00 left \r",
      " [ 427 / 500 ]  85% - 0:00:00 left \r",
      " [ 428 / 500 ]  86% - 0:00:00 left \r",
      " [ 429 / 500 ]  86% - 0:00:00 left \r",
      " [ 430 / 500 ]  86% - 0:00:00 left \r",
      " [ 431 / 500 ]  86% - 0:00:00 left \r",
      " [ 432 / 500 ]  86% - 0:00:00 left \r",
      " [ 433 / 500 ]  87% - 0:00:00 left \r",
      " [ 434 / 500 ]  87% - 0:00:00 left \r",
      " [ 435 / 500 ]  87% - 0:00:00 left \r",
      " [ 436 / 500 ]  87% - 0:00:00 left \r",
      " [ 437 / 500 ]  87% - 0:00:00 left \r",
      " [ 438 / 500 ]  88% - 0:00:00 left \r",
      " [ 439 / 500 ]  88% - 0:00:00 left \r",
      " [ 440 / 500 ]  88% - 0:00:00 left \r",
      " [ 441 / 500 ]  88% - 0:00:00 left \r",
      " [ 442 / 500 ]  88% - 0:00:00 left \r",
      " [ 443 / 500 ]  89% - 0:00:00 left \r",
      " [ 444 / 500 ]  89% - 0:00:00 left \r",
      " [ 445 / 500 ]  89% - 0:00:00 left \r",
      " [ 446 / 500 ]  89% - 0:00:00 left \r",
      " [ 447 / 500 ]  89% - 0:00:00 left \r",
      " [ 448 / 500 ]  90% - 0:00:00 left \r",
      " [ 449 / 500 ]  90% - 0:00:00 left \r",
      " [ 450 / 500 ]  90% - 0:00:00 left \r",
      " [ 451 / 500 ]  90% - 0:00:00 left \r",
      " [ 452 / 500 ]  90% - 0:00:00 left \r",
      " [ 453 / 500 ]  91% - 0:00:00 left \r",
      " [ 454 / 500 ]  91% - 0:00:00 left \r",
      " [ 455 / 500 ]  91% - 0:00:00 left \r",
      " [ 456 / 500 ]  91% - 0:00:00 left \r",
      " [ 457 / 500 ]  91% - 0:00:00 left \r",
      " [ 458 / 500 ]  92% - 0:00:00 left \r",
      " [ 459 / 500 ]  92% - 0:00:00 left \r",
      " [ 460 / 500 ]  92% - 0:00:00 left \r",
      " [ 461 / 500 ]  92% - 0:00:00 left \r",
      " [ 462 / 500 ]  92% - 0:00:00 left \r",
      " [ 463 / 500 ]  93% - 0:00:00 left \r",
      " [ 464 / 500 ]  93% - 0:00:00 left \r",
      " [ 465 / 500 ]  93% - 0:00:00 left \r",
      " [ 466 / 500 ]  93% - 0:00:00 left \r",
      " [ 467 / 500 ]  93% - 0:00:00 left \r",
      " [ 468 / 500 ]  94% - 0:00:00 left \r",
      " [ 469 / 500 ]  94% - 0:00:00 left \r",
      " [ 470 / 500 ]  94% - 0:00:00 left \r",
      " [ 471 / 500 ]  94% - 0:00:00 left \r",
      " [ 472 / 500 ]  94% - 0:00:00 left \r",
      " [ 473 / 500 ]  95% - 0:00:00 left \r",
      " [ 474 / 500 ]  95% - 0:00:00 left \r",
      " [ 475 / 500 ]  95% - 0:00:00 left \r",
      " [ 476 / 500 ]  95% - 0:00:00 left \r",
      " [ 477 / 500 ]  95% - 0:00:00 left \r",
      " [ 478 / 500 ]  96% - 0:00:00 left \r",
      " [ 479 / 500 ]  96% - 0:00:00 left \r",
      " [ 480 / 500 ]  96% - 0:00:00 left \r",
      " [ 481 / 500 ]  96% - 0:00:00 left \r",
      " [ 482 / 500 ]  96% - 0:00:00 left \r",
      " [ 483 / 500 ]  97% - 0:00:00 left \r",
      " [ 484 / 500 ]  97% - 0:00:00 left \r",
      " [ 485 / 500 ]  97% - 0:00:00 left \r",
      " [ 486 / 500 ]  97% - 0:00:00 left \r",
      " [ 487 / 500 ]  97% - 0:00:00 left \r",
      " [ 488 / 500 ]  98% - 0:00:00 left \r",
      " [ 489 / 500 ]  98% - 0:00:00 left \r",
      " [ 490 / 500 ]  98% - 0:00:00 left \r",
      " [ 491 / 500 ]  98% - 0:00:00 left \r",
      " [ 492 / 500 ]  98% - 0:00:00 left \r",
      " [ 493 / 500 ]  99% - 0:00:00 left \r",
      " [ 494 / 500 ]  99% - 0:00:00 left \r",
      " [ 495 / 500 ]  99% - 0:00:00 left \r",
      " [ 496 / 500 ]  99% - 0:00:00 left \r",
      " [ 497 / 500 ]  99% - 0:00:00 left \r",
      " [ 498 / 500 ] 100% - 0:00:00 left \r",
      " [ 499 / 500 ] 100% - 0:00:00 left \r",
      " [ 500 / 500 ] 100% - 0:00:00 left \n",
      " quantization error: 6.4457174415946375e-06\n",
      " topographic error: 0.0\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "sys.path.insert(0, '../')\n",
    "\n",
    "from minisom import MiniSom\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "%load_ext autoreload\n",
    "\n",
    "#Training inputs for RGBcolors\n",
    "colors = np.array(\n",
    "     [[0., 0., 0.],\n",
    "      [0., 0., 1.],\n",
    "      [0., 0., 0.5],\n",
    "      [0.125, 0.529, 1.0],\n",
    "      [0.33, 0.4, 0.67],\n",
    "      [0.6, 0.5, 1.0],\n",
    "      [0., 1., 0.],\n",
    "      [1., 0., 0.],\n",
    "      [0., 1., 1.],\n",
    "      [1., 0., 1.],\n",
    "      [1., 1., 0.],\n",
    "      [1., 1., 1.],\n",
    "      [.33, .33, .33],\n",
    "      [.5, .5, .5],\n",
    "      [.66, .66, .66]])\n",
    "color_names = \\\n",
    "    ['black', 'blue', 'darkblue', 'skyblue',\n",
    "     'greyblue', 'lilac', 'green', 'red',\n",
    "     'cyan', 'violet', 'yellow', 'white',\n",
    "     'darkgrey', 'mediumgrey', 'lightgrey']\n",
    "\n",
    "from minisom import MiniSom    \n",
    "som = MiniSom(20, 30, 3, sigma=3., \n",
    "              learning_rate=0.5, \n",
    "              neighborhood_function='gaussian')\n",
    "som.train_random(colors, 500, verbose=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x11a7c8d30>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(abs(som.get_weights()), interpolation='none')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
